<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  
  
  <title>原理题 | 个人博客</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <meta name="description" content="浏览器是用V8语言，V8引擎去处理js语言，v8语言是如何运行了js语言的呢?js语言是属于高级语言，高级语言是不能被cpu所处理的，cpu只能处理机器语言，所以说中间要有一个转化的过程，需要把高级语言转化成汇编语言，那么转化的过程就需要咱们的抽象语法术，称做为AST树，在这个里面提供了一个Assign的一个模块，那么这个模块每当函数被调用一次。每当函数被执行一次，当前这个模块会给它打标记，把它从">
<meta property="og:type" content="article">
<meta property="og:title" content="原理题">
<meta property="og:url" content="https://gitee.com/wieldy/bailment-blog/2023/06/20/%E7%BD%91%E7%BA%A2%E9%9D%A2%E8%AF%95%E9%A2%98/index.html">
<meta property="og:site_name" content="个人博客">
<meta property="og:description" content="浏览器是用V8语言，V8引擎去处理js语言，v8语言是如何运行了js语言的呢?js语言是属于高级语言，高级语言是不能被cpu所处理的，cpu只能处理机器语言，所以说中间要有一个转化的过程，需要把高级语言转化成汇编语言，那么转化的过程就需要咱们的抽象语法术，称做为AST树，在这个里面提供了一个Assign的一个模块，那么这个模块每当函数被调用一次。每当函数被执行一次，当前这个模块会给它打标记，把它从">
<meta property="og:locale" content="en_US">
<meta property="article:published_time" content="2023-06-20T08:05:38.000Z">
<meta property="article:modified_time" content="2023-11-13T13:20:30.143Z">
<meta property="article:author" content="John Doe">
<meta name="twitter:card" content="summary">
  
    <link rel="alternate" href="/bailment-blog/atom.xml" title="个人博客" type="application/atom+xml">
  
  
    <link rel="shortcut icon" href="/bailment-blog/favicon.png">
  
  
    
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/typeface-source-code-pro@0.0.71/index.min.css">

  
  
<link rel="stylesheet" href="/bailment-blog/css/style.css">

  
    
<link rel="stylesheet" href="/bailment-blog/fancybox/jquery.fancybox.min.css">

  
<meta name="generator" content="Hexo 6.3.0"></head>

<body>
  <div id="container">
    <div id="wrap">
      <header id="header">
  <div id="banner"></div>
  <div id="header-outer" class="outer">
    <div id="header-title" class="inner">
      <h1 id="logo-wrap">
        <a href="/bailment-blog/" id="logo">个人博客</a>
      </h1>
      
    </div>
    <div id="header-inner" class="inner">
      <nav id="main-nav">
        <a id="main-nav-toggle" class="nav-icon"></a>
        
          <a class="main-nav-link" href="/bailment-blog/">Home</a>
        
          <a class="main-nav-link" href="/bailment-blog/archives">Archives</a>
        
      </nav>
      <nav id="sub-nav">
        
          <a id="nav-rss-link" class="nav-icon" href="/bailment-blog/atom.xml" title="RSS Feed"></a>
        
        <a id="nav-search-btn" class="nav-icon" title="Search"></a>
      </nav>
      <div id="search-form-wrap">
        <form action="//google.com/search" method="get" accept-charset="UTF-8" class="search-form"><input type="search" name="q" class="search-form-input" placeholder="Search"><button type="submit" class="search-form-submit">&#xF002;</button><input type="hidden" name="sitesearch" value="https://gitee.com/wieldy/bailment-blog"></form>
      </div>
    </div>
  </div>
</header>

      <div class="outer">
        <section id="main"><article id="post-网红面试题" class="h-entry article article-type-post" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
  <div class="article-meta">
    <a href="/bailment-blog/2023/06/20/%E7%BD%91%E7%BA%A2%E9%9D%A2%E8%AF%95%E9%A2%98/" class="article-date">
  <time class="dt-published" datetime="2023-06-20T08:05:38.000Z" itemprop="datePublished">2023-06-20</time>
</a>
    
  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 class="p-name article-title" itemprop="headline name">
      原理题
    </h1>
  

      </header>
    
    <div class="e-content article-entry" itemprop="articleBody">
      
        <p>浏览器是用V8语言，V8引擎去处理js语言，v8语言是如何运行了js语言的呢?<br>js语言是属于高级语言，高级语言是不能被cpu所处理的，cpu只能处理机器语言，<br>所以说中间要有一个转化的过程，需要把高级语言转化成汇编语言，那么转化的过程就需要咱们的抽象语法术，称做为AST树，在这个里面提供了一个Assign的一个模块，那么这个模块每当函数被调用一次。每当函数被执行一次，当前这个模块会给它打标记，把它从一个高级语言转换成一个可以解析的汇编语言。<br>在往下，汇编语言怎么转换成机器语言，就是0101的这样的一个形式，它是通过一个浏览器内部的一个叫Turbo fan这样的东西，那么它也是一个集成的模块，将它把这个东西转换成一个可以执行的执行码，放到cpu里面，作为一个可以运行的程序，一个一段开辟开关进行执行，那么优化的方案或者说我们去做一个浏览器内核的方案，通常也是从这两块，一个是ignition，一个是Turbofan，这两个地方去做的，包括常见的Blink，Gecko，以及Mozilla之类的，都是使用这样的一个架构或者模式吧，然后最近比较火的是这个V8，V8也是使用这样的一个模式延续下去去做的。浏览器底层内容的重要性。</p>
<p>项目从立项到上线整个流程？<br>产品经理PM去挖掘需求，然后做一个原型图，然后我们去做评审，评审之后，确认无误，然后把这件事的文档发给UI，UE，发给2D和Fe对应的部门去产出对应的接口文档和设计文档，还有前端的开发文档，接下来就是正式的一个排期，走项目的一个过程，做项目的话会按照具体的一个功能点，把这个功能单打散，每个功能点去按照一个人日去进行排，等到排期的最后一步呢，我们把前端写的代码和后台写的代码合到一起去做联调，然后联调的时间大概是开发时间的3&#x2F;4左右，然后最后的话，有一个ui，ue的验收，和pm的验收，确认没问题我们去提测，然后提测的时间大概是1&#x2F;2左右的一个时间，确认无误后，去定一个良辰吉日去上线，上线的话一般是在这个用户量比较低的时候，大概是晚上8点钟之后，去做一个上线，但如果是贵公司有这种无损上线的方案的话也可以去找一个好一点的事情，就是晚上四五点钟的时候上线，也是可以的，上线之后，如果有问题的话，需要及时去做这个上线问题的修复，如果没问题的话，就可以去发这个邮件，通知上线成功了。通常上线流程的话一般也分为两步，通常会先上一个模拟环境或者要单台机，确认无误的时候，所有的上线的代码，去推全推全量。然后去发布到每个区域的集群上，大概就这样的一个流程。</p>
<p>AST语法树<br>语法抽象，然后把语法按照树形结构给你抽象出来，标记出了各个节点，然后知道节点之后，有什么好处呢，你可以按照自己的一个需求，比如说我就要对dom节点，就要对test节点，就要对方法节点做一些操作的时候，通过ast，再结合一些这种线程的插件生成一个.json的文件，然后通过这样的一个文件，去对你整个项目做一个分析，一是可以优化你的项目，第二你再做一些loader或者是做一些plugin的时候，可以用到AST，再一点，做文件的转换呀，做一些代码的转编译啊，或者做这台的转编译等等，都可以用到这样的AST，它是一个很常见的技术，但是，我觉得就是以一个刚毕业的学生，没必要回答这样的一个问题。</p>

      
    </div>
    <footer class="article-footer">
      <a data-url="https://gitee.com/wieldy/bailment-blog/2023/06/20/%E7%BD%91%E7%BA%A2%E9%9D%A2%E8%AF%95%E9%A2%98/" data-id="cljmgj1f3000tzc9j50ngcmhg" data-title="原理题" class="article-share-link">Share</a>
      
      
      
    </footer>
  </div>
  
    
<nav id="article-nav">
  
    <a href="/bailment-blog/2023/06/29/payMent/" id="article-nav-newer" class="article-nav-link-wrap">
      <strong class="article-nav-caption">Newer</strong>
      <div class="article-nav-title">
        
          payMent
        
      </div>
    </a>
  
  
    <a href="/bailment-blog/2023/06/19/%E5%89%8D%E7%AB%AF%E5%A4%A7%E5%B1%8F%E8%87%AA%E9%80%82%E5%BA%94%E6%96%B9%E6%B3%95/" id="article-nav-older" class="article-nav-link-wrap">
      <strong class="article-nav-caption">Older</strong>
      <div class="article-nav-title">前端大屏自适应方法</div>
    </a>
  
</nav>

  
</article>


</section>
        
          <aside id="sidebar">
  
    

  
    

  
    
  
    
  <div class="widget-wrap">
    <h3 class="widget-title">Archives</h3>
    <div class="widget">
      <ul class="archive-list"><li class="archive-list-item"><a class="archive-list-link" href="/bailment-blog/archives/2023/07/">July 2023</a></li><li class="archive-list-item"><a class="archive-list-link" href="/bailment-blog/archives/2023/06/">June 2023</a></li><li class="archive-list-item"><a class="archive-list-link" href="/bailment-blog/archives/2023/04/">April 2023</a></li><li class="archive-list-item"><a class="archive-list-link" href="/bailment-blog/archives/2023/03/">March 2023</a></li><li class="archive-list-item"><a class="archive-list-link" href="/bailment-blog/archives/2022/03/">March 2022</a></li></ul>
    </div>
  </div>


  
    
  <div class="widget-wrap">
    <h3 class="widget-title">Recent Posts</h3>
    <div class="widget">
      <ul>
        
          <li>
            <a href="/bailment-blog/2023/07/03/%E5%B7%A5%E4%BD%9C%E6%97%A5%E5%BF%97/">工作日志</a>
          </li>
        
          <li>
            <a href="/bailment-blog/2023/06/29/payMent/">payMent</a>
          </li>
        
          <li>
            <a href="/bailment-blog/2023/06/20/%E7%BD%91%E7%BA%A2%E9%9D%A2%E8%AF%95%E9%A2%98/">原理题</a>
          </li>
        
          <li>
            <a href="/bailment-blog/2023/06/19/%E5%89%8D%E7%AB%AF%E5%A4%A7%E5%B1%8F%E8%87%AA%E9%80%82%E5%BA%94%E6%96%B9%E6%B3%95/">前端大屏自适应方法</a>
          </li>
        
          <li>
            <a href="/bailment-blog/2023/06/17/10%E4%B8%AAJavaScript%E5%B8%B8%E8%A7%81%E9%AB%98%E7%BA%A7%E7%9F%A5%E8%AF%86%E7%82%B9/">10个JavaScript常见高级知识点</a>
          </li>
        
      </ul>
    </div>
  </div>

  
</aside>
        
      </div>
      <footer id="footer">
  
  <div class="outer">
    <div id="footer-info" class="inner">
      
      &copy; 2023 John Doe<br>
      Powered by <a href="https://hexo.io/" target="_blank">Hexo</a>
    </div>
  </div>
</footer>

    </div>
    <nav id="mobile-nav">
  
    <a href="/bailment-blog/" class="mobile-nav-link">Home</a>
  
    <a href="/bailment-blog/archives" class="mobile-nav-link">Archives</a>
  
</nav>
    


<script src="/bailment-blog/js/jquery-3.4.1.min.js"></script>



  
<script src="/bailment-blog/fancybox/jquery.fancybox.min.js"></script>




<script src="/bailment-blog/js/script.js"></script>





  </div>
</body>
</html>